// 生产计划编辑商品

<template>
  <view>
    <mes-form ref="formTopRef" :mesForm="mesFormTop"></mes-form>
    <mes-button type="3" :form="buttonForm"></mes-button>
  </view>
</template>

<script>
export default {
  async onLoad(options) {
    this.index = options.index
    // this.mesFormTop.items[3].slots.icon =
    //   getApp().globalData.goods.list[this.index].serial_status == 1
    //     ? 'yield'
    //     : ''

    this.mesFormTop.row = JSON.parse(
      JSON.stringify(getApp().globalData.goods.list[this.index])
    )
 
    // 获取商品单位
    this.mesFormTop.items[2].slots.select.options = await this.$tools.getUnit(
      this.mesFormTop.row.goods_id || this.mesFormTop.row.id
    )
    this.mesFormTop.row.basic_nmber=this.mesFormTop.row.number
  },
  data() {
    return {
      index: '',
      buttonForm: {
        leftText: '删除',
        rightText: '保存',
        leftEvent: () => {
          uni.showModal({
            title: '提示',
            content: '是否确认删除？',
            success: ({ confirm }) => {
              if (confirm) {
                getApp().globalData.goods.list.splice(this.index, 1)
                this.$tools.successBack('删除成功')
              }
            }
          })
        },
        rightEvent: () => {
          getApp().globalData.goods.list[this.index] = this.mesFormTop.row
          this.$tools.successBack('保存成功')
        }
      },
      mesFormTop: {
        // 表单数据
        row: {},
        // 渲染数据
        items: [
          {
            title: '商品编号',
            // 右侧组件
            slots: {
              // 绑定表单数据中的属性
              field: 'goods_code'
            }
          },
          {
            title: '商品名称',
            // 右侧组件
            slots: {
              // 绑定表单数据中的属性
              field: 'goods_name'
            }
          },
          {
            title: '商品单位',
            // type 不传默认为普通文字
            slots: {
              field: 'unit_name',
              type: 'select',
              icon: 'arrow',
              select: {
                options: [],
                changeEvent: (item) => {
                  this.mesFormTop.row.goods_unit = item.id
                  this.mesFormTop.row.unit_name = item.name
                  this.formatInfo('goods_unit')
                }
              }
            },
            rules: [
              {
                // 是否必要
                type: 'required',
                // 校验提示语
                message: '请选择商品单位'
              }
            ]
          },
          {
            title: '数量',
            // 是否必要
            required: true,

            // 右侧组件
            slots: {
              // icon: 'yield',
              // 绑定表单数据中的属性
              field: 'number',
              // 序列号数组的字段 不传默认为serial
              serialField: 'period',
              // 组件类型
              type: 'input',
              input_type: 'digit',
              inputEvent: () => {
                this.formatInfo('number')
              }
            },
            // 表单校验规则(不传默认不校验)
            rules: [
              {
                // 是否必要
                type: 'required',
                message: '请输入数量'
              }
            ]
          },

          {
            title: '基本单位',
            // 是否必要
            required: true,
            // 右侧组件
            slots: {
              // 绑定表单数据中的属性
              field: 'default_unit_name'
            }
          },
          {
            title: '基本数量',
            // 是否必要
            required: true,
            // 右侧组件
            slots: {
              // 绑定表单数据中的属性
              field: 'basic_nmber'
            }
          },
          {
            title: '单价',
            // 是否必要
            required: true,
            // 右侧组件
            slots: {
              // 绑定表单数据中的属性
              field: 'purchase',
              // 组件类型
              type: 'input',
              input_type: 'digit',
              inputEvent: () => {
                this.formatInfo('unit_price')
              }
            },
            // 表单校验规则(不传默认不校验)
            rules: [
              {
                // 是否必要
                type: 'required',
                message: '请输入单价'
              }
            ]
          },
          {
            title: '金额',
            // 是否必要
            required: true,
            // 右侧组件
            slots: {
              // 绑定表单数据中的属性
              field: 'money',
              // 组件类型
              type: 'input',
              input_type: 'digit',
              inputEvent: () => {
                this.formatInfo('all_money')
              }
            },
            // 表单校验规则(不传默认不校验)
            rules: [
              {
                // 是否必要
                type: 'required',
                message: '请输入金额'
              }
            ]
          }
        ]
      }
    }
  },
  methods: {
    // 获取变动价格
    async formatInfo(now_field) {
      const postForm = {
        // 商品编号
        goods_code: this.mesFormTop.row.goods_code|| null,
        // 商品属性ID（无属性请传空）
        goods_attr: '',
        // 商品单位ID
        goods_unit:
          this.mesFormTop.row.goods_unit || this.mesFormTop.row.unit_id|| null,
        // 仓库ID
        store: '',
        // 数量
        number: this.mesFormTop.row.number|| null,
        // 商品单价
        unit_price: this.mesFormTop.row.purchase|| null,
        // 商品含税单价
        tax_included: this.mesFormTop.row.purchase|| null,
        // 折扣率
        discount: '',
        // 折扣额
        dis_money: '',
        // 购货金额
        all_money: this.mesFormTop.row.money|| null,
        // 税率
        tax_rate: 0,
        // 税额
        tax_money: '',
        // 价税合计
        money_tax_price: this.mesFormTop.row.money|| null,
        // 当前变动字段
        now_field:now_field?now_field:null
      }
      const res = await this.$api.buy.common.formatInfo(postForm)
      if (res.code == 200) {
        this.mesFormTop.row.number = res.data.number
        this.mesFormTop.row.purchase = res.data.unit_price
        this.mesFormTop.row.money = res.data.all_money
        this.mesFormTop.row.basic_nmber = res.data.basic_nmber
      }
    }
  }
}
</script>
